import type { resType } from './type'

// 网络问题触发的code
export function showStatus(status: number | string) {
  let msg: string
  switch (status) {
    case 403:
      msg = '拒绝访问(403)';
      break;
    case 404:
      msg = '网络请求不存在(404)';
      break;
    case 500:
      msg = '服务器错误(500)';
      break;
    case 502:
      msg = '网络错误(502)';
      break;
    case 503:
      msg = '服务不可用(503)';
      break;
    case 504:
      msg = '网络请求超时(504)';
      break;
    default:
      msg = `连接出错(${status})!`;
  }
  return msg;
}

// 音视频请求返回的code
export function showRetCode(res: resType) {
  const returnData = {
    code: res.ret,
    isResolve: true,
    changePath: '',
    ...res
  };
  if (res.ret === 0) {
    returnData.isResolve = false
  }
  return returnData
}

// 请求返回的code
export function showResCode(res: resType, isResolve: boolean) {
  const returnData = {
    code: res.code,
    msg: '',
    isResolve: false,
    changePath: ''
  };
  switch (res.code) {
    case 200:
      returnData.isResolve = true; // 返回数据
      returnData.msg = res.msg || '操作成功!';
      break;
    // 400 操作失败 405 未查询到记录 406 输入的格式不正确
    case 400:
    case 405:
    case 406:
      returnData.isResolve = isResolve; // 根据调用需求返回数据
      returnData.msg = res.msg || '操作失败!';
      break;
    // 401 无token 402 token无效 408 刷新token
    case 401:
    case 402:
    case 408:
      returnData.msg = '账号在其他设备登录或token无效';
      returnData.isResolve = false; // 返回数据
      returnData.changePath = '/'; // 根据调用需求返回数据
      break;
    case 403:
      returnData.isResolve = false;
      returnData.msg = res.msg || '无此权限!';
      break;
    case 404:
      returnData.isResolve = false;
      returnData.msg = res.msg || '请求路径不存在!';
      break;
    case 409:
      returnData.isResolve = false;
      returnData.msg = res.msg || '用户信息存在异常';
      returnData.changePath = '/';
      break;
    case 410:
      returnData.isResolve = isResolve;
      returnData.msg = res.msg || '重新请求!';
      break;
    case 500:
      returnData.isResolve = false;
      returnData.msg = res.msg || '请求参数错误!';
      break;
    default:
      returnData.msg = `请求失败！请检查网络!`;
  }
  return returnData;
}